关于spring boot使用redis的increment()方法自增问题 |
您所在的位置:网站首页 › redis set incr › 关于spring boot使用redis的increment()方法自增问题 |
需求是限制IP频繁访问某接口,用的方案是使用redis记录访问IP的值,先设定好初始值,每次访问自增,达到某限定值后,进行阻止。 用的是自定义工具类,使用spring封装的spring-data-redis进行操作,在对某key进行increment()方法时,报错: redis ERR value is not an integer or out of range代码逻辑如下: Integer count = (Integer) redisUtil.get(ipAddress);//取得key的value if (count == null){ redisUtil.set(ipAddress,1,10); return false; }else if(count == 3){ return false; }else { redisUtil.incr(ipAddress,1); return false; }
第一次进来,如果没有redis中没有数据,则设置key,value和time,key是ip, value初始值为1,有效时长为10秒。 如果没达到限制次数,则对key自增1。 redisUtil.incr()方法实现如下: @Resource private RedisTemplate redisTemplate; //这里使用的是redisTemplate public void setRedisTemplate(RedisTemplate redisTemplate) { this.redisTemplate = redisTemplate; } /** * 递增 * @param key 键 // * @param by 要增加几(大于0) * @return */ public long incr(String key, long delta){ if(delta |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |